import { validateAmount } from '@/libs/validate.js'
const serialReg = new RegExp('^\\d{1,19}$')
export default {
    gdsMtno (value) {
        return value ? '' : '商品料号必填'
    },
    putrecSeqno (value) {
        const ieFlag = this.ieFlag || ''
        return value
            ? serialReg.test(value) ? '' : '备案序号最大为19位数字'
            : ieFlag == 'E' ? '备案序号必填' : ''
    },
    gdecd (value) {
        if (value) {
            return /^\d{10}$/.test(value) ? '' : '商品编码必须为10位数字'
        }
        return '商品编码必填'
    },
    gdsNm (value) {
        return value ? '' : '商品名称必填'
    },
    gdsSpcfModelDesc (value) {
        return value ? '' : '规格型号必填'
    },
    dclCurrcd (value) {
        return value ? '' : '币制必选'
    },
    dclUnitcd (value) {
        return value ? '' : '申报计量单位必选'
    },
    dclQty (value) {
        if (value) {
            return validateAmount(value, 0, 9999999999999.99999, 5)
                ? ''
                : '申报数量整数最多13位，小数最多5位，不可输入负数'
        }
        return '申报数量必填'
    },
    lawfQty (value, data) {
        if (value) {
            let err = validateAmount(value, 0, 9999999999999.99999, 5)
                ? ''
                : '法定数量整数最多13位，小数最多5位，不可输入负数'
            if (err === '') {
                const { lawfUnitcd, dclUnitcd, dclQty } = data
                if (Number(dclQty) && lawfUnitcd && lawfUnitcd === dclUnitcd && Number(dclQty) != Number(value)) {
                    err = '成交单位与法定单位相等，法定数量必须与成交数量一致'
                }
            }
            return err
        }
        return '法定数量必填'
    },
    secdLawfQty (value, data) {
        const unit = data.secdLawfUnitcd
        if (!unit && value) {
            return '没有第二法定单位时，法二数量应为空' // 法二数量与法二单位关联校验(TAPD:1027008)
        }
        let err = ''
        if (value) {
            err = validateAmount(value, 0.00001, 9999999999999.99999, 5)
                ? ''
                : '第二法定数量整数最多13位，小数最多5位，且大于0' // 法二数量大于0(TAPD:1027008)
        } else if (unit) {
            err = '有第二法定单位时，第二法定数量必填且大于0' // 法二数量与法二单位关联校验(TAPD:1027008)
        }
        if (err === '') {
            const { secdLawfUnitcd, dclUnitcd, dclQty } = data
            if (Number(dclQty) && secdLawfUnitcd && secdLawfUnitcd === dclUnitcd && Number(dclQty) != Number(value)) {
                err = '成交单位与法二单位相等，第二法定数量必须与成交数量一致'
            }
        }
        return err
    },
    dclUprcAmt (value) {
        if (value) {
            return validateAmount(value, 0, 99999999999999.9999, 4)
                ? ''
                : '企业申报单价整数最多14位，小数最多4位，不可输入负数'
        }
        return '企业申报单价必填'
    },
    dclTotalAmt (value) {
        if (value) {
            return validateAmount(value, 0, 999999999999999.99, 2)
                ? ''
                : '企业申报单价整数最多15位，小数最多2位，不可输入负数'
        }
        return '企业申报总价必填'
    },
    natcd (value) {
        return value ? '' : '原产国(地区)必选'
    },
    grossWt (value) {
        if (value) {
            return validateAmount(value, 0, 9999999999999.99999, 5)
                ? ''
                : '毛重整数最多13位，小数最多5位，不可输入负数'
        }
        return ''
    },
    netWt (value) {
        if (value) {
            return validateAmount(value, 0, 9999999999999.99999, 5)
                ? ''
                : '净重整数最多13位，小数最多5位，不可输入负数'
        }
        return ''
    },
    destinationNatcd (value) {
        return value ? '' : '最终目的国(地区)必选'
    },
    lvyrlfModecd (value) {
        return value ? '' : '征免方式必选'
    }
}
